package com.hspedu.reflection.class_;

import com.hspedu.Car;

import java.lang.reflect.Field;

/**
 * @author DL5O
 * @version 1.0
 */
public class Class02 {
    public static void main(String[] args) throws Exception {
        String classAllPath = "com.hspedu.Car";

        //获取到Car类对应的 Class对象
        //<?> 表示不确定的Class类型，不加/加都可以
        Class<?> cls = Class.forName(classAllPath);
        //输出cls
        System.out.println(cls);//显示cls 对象，是那个类 的Class对象，com.hspedu.Car
        System.out.println(cls.getClass());//输出它的运行类型 class java.lang.Class
        //其他用法

        //3.得到包名
        System.out.println(cls.getPackage().getName());//包名
        //4.得到全类名
        System.out.println(cls.getName());
        //5.通过cls创建对象实例
        Car car = (Car)cls.newInstance();
        System.out.println(car);
        //6.通过反射获取属性，brand属性
        Field brand = cls.getField("brand");
        System.out.println(brand.get(car));
        //7.通过反射给属性赋值
        brand.set(car,"奔驰");
        System.out.println(brand.get(car));

        //8.获取所有的属性(字段)
        System.out.println("==============");
        Field[] fields = cls.getFields();
        for (Field f : fields)  {
            System.out.println(f.getName());//属性的各个名称
        }

    }
}
